version-lp 0.2.1

a version struct library for use with version comparing, and wildcard resolving
Documentation

version-lp-rs

A rust library for dealing with versions designed to be used with lovepack tools.

Overview

Contains a custom version Struct that is based on the Semantic Versioning System. Only supports the a.b.c format, but with any number of points, i.e. a.b, a.b.c.d are also valid versions. Also has support for wildcards when compairing Versions.


let wild_version = Version::from_str("2.*.*");

Version::from_string("2.3.4").unwrap().is_compatible_with(&wild_version) // will return true

And standard comparions can be used.


let ver_a = Version::from_str("2.1.4");
let ver_b = Version::from_str("2.2.3");
let ver_c = Version::from_str("2.1.4");


ver_a < ver_b // true
ver_a == ver_c // true

You can also get the latest available version from a list.

let versions : Vec<Version> = vec![
    Version::from_str("1.0.0").unwrap(),
    Version::from_str("1.0.1").unwrap(),
    Version::from_str("1.1.0").unwrap(),
    Version::from_str("1.0.2").unwrap()
];

let requirement = Version::from_str("1").unwrap();

let version = requirement.latest_compatible_version(&versions); // would be Version (1.1.0)

Notes for Success

  • You cannot compare against patterns, patterns can only be checked using the is_compatible_with function.
  • Wildcards will be assumed when compairing different length version numbers. 1.2 will be compatible with 1.2.3

Pattern Matching

Currently the only wildcard supported is *. But ^ can be achieved by using short versions: 1.2 would match with 1.2.1 to 1.2.100 and would return the latest version in a list using ::latest_compatible_version.